@nice2dev/ui 1.0.18 → 1.0.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/CHANGELOG.md +64 -0
  2. package/dist/NiceErrorBoundary-Bzx-bOeb.cjs +1 -0
  3. package/dist/NiceErrorBoundary-DBCCmeyl.js +770 -0
  4. package/dist/NiceErrorBoundary-DvA00DOz.cjs +1 -0
  5. package/dist/NiceErrorBoundary-V6wkSSLP.cjs +1 -0
  6. package/dist/NiceErrorBoundary-eTwBEuSH.js +770 -0
  7. package/dist/NiceErrorBoundary-qp4IJ18o.js +770 -0
  8. package/dist/NiceForm-B1Okz7SW.cjs +382 -0
  9. package/dist/NiceForm-BXHPoTcH.cjs +382 -0
  10. package/dist/NiceForm-DL7Kxsi2.js +5383 -0
  11. package/dist/NiceForm-DLADlHAQ.js +5383 -0
  12. package/dist/NiceForm-DUkduLqG.cjs +382 -0
  13. package/dist/NiceForm-D_XZxq3a.js +5383 -0
  14. package/dist/NiceForm.css +1 -1
  15. package/dist/NiceModal-0Sg2HxIb.cjs +1 -0
  16. package/dist/NiceModal-BRih_XEH.js +95 -0
  17. package/dist/NiceModal-C4HIsjrn.js +95 -0
  18. package/dist/NiceModal-CUdeVj-j.js +95 -0
  19. package/dist/NiceModal-Cc8R-DpX.cjs +1 -0
  20. package/dist/NiceModal-DieswZtd.cjs +1 -0
  21. package/dist/NiceModuleLifecyclePanel-4UEsYB5r.js +6553 -0
  22. package/dist/NiceModuleLifecyclePanel-C6agdtTI.cjs +1 -0
  23. package/dist/NiceModuleLifecyclePanel-CEfeJxw_.cjs +1 -0
  24. package/dist/NiceModuleLifecyclePanel-D4xWUswk.js +6777 -0
  25. package/dist/NiceModuleLifecyclePanel-jDzEfvDM.js +6553 -0
  26. package/dist/NiceModuleLifecyclePanel-sBJLlhJp.cjs +1 -0
  27. package/dist/NiceModuleLifecyclePanel.css +1 -1
  28. package/dist/NicePagination-B2TC6MTL.cjs +1 -0
  29. package/dist/NicePagination-BAywVGwT.js +171 -0
  30. package/dist/NicePagination-Cqr3Pe_F.js +171 -0
  31. package/dist/NicePagination-DnnypBiE.js +171 -0
  32. package/dist/NicePagination-DyWWdtb3.cjs +1 -0
  33. package/dist/NicePagination-F8NyMfgc.cjs +1 -0
  34. package/dist/NicePinCodeInput-Bo8Ahkae.js +12240 -0
  35. package/dist/NicePinCodeInput-C6zJxUVf.cjs +419 -0
  36. package/dist/NicePinCodeInput-CpPtHZsK.js +12240 -0
  37. package/dist/NicePinCodeInput-Cpa01Yfg.cjs +419 -0
  38. package/dist/NicePinCodeInput-JvYd_LB_.cjs +419 -0
  39. package/dist/NicePinCodeInput-ltwzQf4r.js +12240 -0
  40. package/dist/NicePinCodeInput.css +1 -1
  41. package/dist/NiceSavedQueryPanel-BIXW0y1X.js +6455 -0
  42. package/dist/NiceSavedQueryPanel-BOBULytX.js +6455 -0
  43. package/dist/NiceSavedQueryPanel-CFHwMDIx.cjs +596 -0
  44. package/dist/NiceSavedQueryPanel-CTfC-qwV.cjs +596 -0
  45. package/dist/NiceSavedQueryPanel-DuonbEem.js +6584 -0
  46. package/dist/NiceSavedQueryPanel-MdKdGYNg.cjs +596 -0
  47. package/dist/NiceSavedQueryPanel.css +1 -1
  48. package/dist/NiceTabs-B9zxj6qd.js +1657 -0
  49. package/dist/NiceTabs-BjBtazRn.cjs +1 -0
  50. package/dist/NiceTabs-C-VQXNIa.cjs +1 -0
  51. package/dist/NiceTabs-CJ8G2t0-.js +1657 -0
  52. package/dist/NiceTabs-CNauJ4fu.cjs +1 -0
  53. package/dist/NiceTabs-v7HfeXIw.js +1657 -0
  54. package/dist/NiceWindow-BMiF-so6.cjs +1 -0
  55. package/dist/NiceWindow-Bo_yCa1o.js +1418 -0
  56. package/dist/NiceWindow-CysIgnn3.js +1418 -0
  57. package/dist/NiceWindow-D6SjpDc4.cjs +1 -0
  58. package/dist/NiceWindow-DPzJxOfx.cjs +1 -0
  59. package/dist/NiceWindow-DUTRQOaP.js +1418 -0
  60. package/dist/charts-C60va95_.js +4657 -0
  61. package/dist/charts-CJlMAHJG.cjs +761 -0
  62. package/dist/charts-CX4jiyVh.cjs +761 -0
  63. package/dist/charts-CYpqDxHd.js +4657 -0
  64. package/dist/charts-D_I1iwel.cjs +761 -0
  65. package/dist/charts-P6qura0j.js +4657 -0
  66. package/dist/charts.cjs +1 -1
  67. package/dist/charts.css +1 -1
  68. package/dist/charts.mjs +1 -1
  69. package/dist/core-Bcc4sz15.cjs +96 -0
  70. package/dist/core-BfeyB9A8.cjs +96 -0
  71. package/dist/core-BgGSTko-.js +22401 -0
  72. package/dist/core-DDJKu5LZ.cjs +96 -0
  73. package/dist/core-Da1dGJN3.js +22401 -0
  74. package/dist/core-XsWxyBHD.js +22767 -0
  75. package/dist/data.cjs +1 -1
  76. package/dist/data.d.ts +5 -0
  77. package/dist/data.mjs +1 -1
  78. package/dist/editors.cjs +1 -1
  79. package/dist/editors.d.ts +44 -1
  80. package/dist/editors.mjs +3 -3
  81. package/dist/feedback.cjs +1 -1
  82. package/dist/feedback.mjs +2 -2
  83. package/dist/index-CQIDqjZp.cjs +5194 -0
  84. package/dist/index-CXVXf_HY.cjs +5194 -0
  85. package/dist/index-CtikFbFa.js +64337 -0
  86. package/dist/index-DCDfWfAt.js +64336 -0
  87. package/dist/index-DpiCo0_e.cjs +5194 -0
  88. package/dist/index-xVJiF843.js +65040 -0
  89. package/dist/index.cjs +1 -1
  90. package/dist/index.css +1 -1
  91. package/dist/index.d.ts +450 -6
  92. package/dist/index.mjs +874 -860
  93. package/dist/lazy.cjs +1 -1
  94. package/dist/lazy.mjs +3 -3
  95. package/dist/navigation.cjs +1 -1
  96. package/dist/navigation.d.ts +50 -3
  97. package/dist/navigation.mjs +30 -30
  98. package/dist/overlays.cjs +1 -1
  99. package/dist/overlays.mjs +53 -53
  100. package/dist/style.css +6 -6
  101. package/package.json +3 -3
package/CHANGELOG.md CHANGED
@@ -1,3 +1,67 @@
1
+ # [1.0.19] — 2026-05-26
2
+
3
+ ### Fixed — NiceNavShell breakpoint sync
4
+
5
+ - **`mobileBreakpoint` default obniżony 960 → 720** żeby zgrać moment
6
+ zniknięcia desktopowego sidebar z momentem pojawienia się hamburgera
7
+ w `NiceTopNav` (oba komponenty domyślnie 720). Eliminuje „martwą
8
+ strefę" 720–960, w której sidebar już nie był widoczny a hamburger
9
+ jeszcze się nie pokazał.
10
+ - **`NiceNavShellApi.isMobile`** — render-prop slot consumers
11
+ (`topNav={(api) => ...}`) otrzymują flagę `isMobile` żeby przekazać
12
+ `forceMobileLayout={api.isMobile}` do własnego `NiceTopNav`. JSDoc na
13
+ `mobileBreakpoint` przypomina by zmienić ten prop na obu komponentach
14
+ jednocześnie, jeśli konsument chce inną wartość.
15
+
16
+ ### Fixed / Added — NiceTopNav narrow mode polish
17
+
18
+ - **Mobile panel header** — nowe propsy `showMobilePanelSelector`,
19
+ `mobilePanels`, `activeMobilePanelId`, `onMobilePanelChange`,
20
+ `showMobilePanelModes`, `mobilePanelModes` pozwalają wstrzyknąć dwa
21
+ opcjonalne wiersze nad menu w pull-down panelu hamburgera: natywny
22
+ `<select>` z workspace'ami i pasek trybów (ikony + etykiety reużywające
23
+ `SIDEBAR_MODE_META`). Widoczność obu wierszy sterowana wyłącznie
24
+ propsami (gate dodatkowo wymaga zalogowanego `user`).
25
+ - **Ghost variant** dla `NiceLanguagePicker`, `NiceThemePicker`,
26
+ `NiceCountryPicker`, `NiceNotifications` i `NiceTopNavExtraActionButton`
27
+ (Settings/extraActions). Aktywuje się automatycznie w narrow mode topnav
28
+ — borderless trigger, ikona-only, bez chevron arrow.
29
+ - **Narrow-mode 3-wiersz layout** — header w narrow mode (`isMobile ||
30
+ forceMobileLayout`) renderuje trzy edge-to-edge wiersze: brand
31
+ (transparent), accessories (`--bg-secondary`), hamburger (`--bg-tertiary`).
32
+ `padding: 0` na headerze + `max-width: none; margin-inline: 0` na inner
33
+ → pasek 100 % szerokości niezależnie od propa `maxWidth`.
34
+ - **Hamburger row hover** — cały wiersz hamburgera jest teraz klikalny;
35
+ przycisk rozciąga się na 100% szerokości wiersza, hover/focus podświetla
36
+ cały pasek a nie tylko niewielki box wokół ikony.
37
+ - **Pull-down panel anchoring** — `hamburgerDrawer` przeniesiony WEWNĄTRZ
38
+ `.nice-top-nav__inner` (zamiast pod `<header>`). `__inner` dostał
39
+ `position: relative` → panel `position: absolute; top: 100%` wysuwa się
40
+ dokładnie spod widocznego paska.
41
+ - **Picker dropdowny w narrow mode** anchorują się teraz do
42
+ `.nice-top-nav__row--accessories` (`position: relative` na wierszu +
43
+ `position: static` na pickerach + `left/right: 0` na dropdownach) →
44
+ rozwijają się na 100% szerokości kontenera, bez przycinania lewą
45
+ krawędzią.
46
+ - **Hamburger ↔ pickery — mutual exclusion**: klik hamburgera zamyka
47
+ `activeCluster` (lang/theme/search); otwarcie pickera zamyka
48
+ `mobileOpen`. Dropdowny nie nakładają się już na panel mobilny.
49
+ - **Notification badge w ghost variant** ma teraz mniejszy font (9 px),
50
+ węższy ring i pozycję `top/right: 0` — nie wystaje poza ghost trigger.
51
+ - **NiceAuthButtons w narrow mode** wymusza `size="sm"` + CSS override
52
+ zmniejsza `.nice-user-menu__avatar` do 28 px, pasuje do reszty ikon ghost.
53
+ - **NiceTopNav `rightCluster` swap** — kolejność w toolbarze: notifications
54
+ → extraActions → settings → auth/avatar → rightContent (zarówno desktop
55
+ jak i narrow). Settings przed loginem dla spójności z innymi shellami.
56
+
57
+ ### Internal
58
+
59
+ - `NiceTopNavExtraActionButton` dostał prop `variant?: 'default' | 'ghost'`.
60
+ - Wszystkie picker triggery w ghost mają teraz `background: transparent`
61
+ na hover/focus/open (zero podświetlenia "kontenera").
62
+
63
+ ---
64
+
1
65
  # [1.1.0] — 2026-05-21 (cd. — batch 6: number/rate/file/search/tag/prompt/palette/lightbox)
2
66
 
3
67
  ### Added — Numeric input / rating / async search / tag input / overlays / command palette
@@ -0,0 +1 @@
1
+ "use strict";const e=require("react/jsx-runtime"),C=require("./core-DDJKu5LZ.cjs"),i=require("react"),P={info:e.jsx("svg",{viewBox:"0 0 20 20",fill:"currentColor",children:e.jsx("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z",clipRule:"evenodd"})}),success:e.jsx("svg",{viewBox:"0 0 20 20",fill:"currentColor",children:e.jsx("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z",clipRule:"evenodd"})}),warning:e.jsx("svg",{viewBox:"0 0 20 20",fill:"currentColor",children:e.jsx("path",{fillRule:"evenodd",d:"M8.485 2.495c.673-1.167 2.357-1.167 3.03 0l6.28 10.875c.673 1.167-.17 2.625-1.516 2.625H3.72c-1.347 0-2.189-1.458-1.515-2.625L8.485 2.495zM10 5a.75.75 0 01.75.75v3.5a.75.75 0 01-1.5 0v-3.5A.75.75 0 0110 5zm0 9a1 1 0 100-2 1 1 0 000 2z",clipRule:"evenodd"})}),error:e.jsx("svg",{viewBox:"0 0 20 20",fill:"currentColor",children:e.jsx("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zM8.28 7.22a.75.75 0 00-1.06 1.06L8.94 10l-1.72 1.72a.75.75 0 101.06 1.06L10 11.06l1.72 1.72a.75.75 0 101.06-1.06L11.06 10l1.72-1.72a.75.75 0 00-1.06-1.06L10 8.94 8.28 7.22z",clipRule:"evenodd"})})},U=({variant:s="info",title:t,children:c,closable:r,onClose:n,icon:a,size:l="md",className:h,style:d,displayStyle:p})=>{const f=C.Ss("card",p);return e.jsxs("div",{className:`nice-alert nice-alert--${s} nice-alert--${l} nice-alert--ds-${f} ${h||""}`,style:d,role:"alert",children:[e.jsx("div",{className:`nice-alert__icon nice-alert__icon--${s}`,children:a||P[s]}),e.jsxs("div",{className:"nice-alert__content",children:[t&&e.jsx("div",{className:"nice-alert__title",children:t}),e.jsx("div",{children:c})]}),r&&e.jsx("button",{type:"button",className:"nice-alert__close",onClick:n,"aria-label":"Close",children:"✕"})]})},Y=({open:s,onClose:t,title:c,position:r="right",size:n="md",children:a,footer:l,transitionDuration:h,className:d,style:p,displayStyle:f})=>{const g=C.vs("modal",f),x=C.Ss("modal",f),{t:b}=C.$o(),v=i.useRef(null);return C.Ps(v,s),i.useEffect(()=>{if(!s)return;const u=o=>{o.key==="Escape"&&t()};return document.addEventListener("keydown",u),document.body.style.overflow="hidden",()=>{document.removeEventListener("keydown",u),document.body.style.overflow=""}},[s,t]),s?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"nice-drawer-overlay",onMouseDown:u=>{u.target===u.currentTarget&&t()}}),e.jsxs("div",{ref:v,className:`nice-drawer nice-drawer--${r} nice-drawer--${n} nice-drawer--ds-${x} ${d||""}`,style:{...g,...p,...h!=null?{transitionDuration:`${h}ms`}:{}},role:"dialog","aria-modal":"true","aria-label":c,children:[c&&e.jsxs("div",{className:"nice-drawer__header",children:[e.jsx("h3",{className:"nice-drawer__title",children:c}),e.jsx("button",{type:"button",className:"nice-drawer__close",onClick:t,"aria-label":b("controls.close","Close"),children:e.jsx("svg",{width:"18",height:"18",viewBox:"0 0 20 20",fill:"currentColor",children:e.jsx("path",{d:"M6.28 5.22a.75.75 0 00-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 101.06 1.06L10 11.06l3.72 3.72a.75.75 0 101.06-1.06L11.06 10l3.72-3.72a.75.75 0 00-1.06-1.06L10 8.94 6.28 5.22z"})})})]}),e.jsx("div",{className:"nice-drawer__body",children:a}),l&&e.jsx("div",{className:"nice-drawer__footer",children:l})]})]}):null},W=({toasts:s,onDismiss:t,position:c="top-right"})=>e.jsx("div",{className:`nice-toast-container nice-toast-container--${c}`,children:s.map(r=>e.jsx(G,{toast:r,onDismiss:t},r.id))}),G=({toast:s,onDismiss:t})=>{const[c,r]=i.useState(!1);return i.useEffect(()=>{if(!s.duration&&s.duration!==0){const n=setTimeout(()=>r(!0),4e3);return()=>clearTimeout(n)}if(s.duration>0){const n=setTimeout(()=>r(!0),s.duration);return()=>clearTimeout(n)}},[s.duration]),i.useEffect(()=>{if(c){const n=setTimeout(()=>t(s.id),200);return()=>clearTimeout(n)}},[c,s.id,t]),e.jsxs("div",{className:`nice-toast nice-toast--${s.variant} ${c?"nice-toast--exiting":""}`,role:"alert",style:{position:"relative"},children:[e.jsx("div",{className:"nice-toast__icon",children:P[s.variant]}),e.jsxs("div",{className:"nice-toast__content",children:[s.title&&e.jsx("div",{className:"nice-toast__title",children:s.title}),e.jsx("div",{className:"nice-toast__message",children:s.message})]}),e.jsx("button",{type:"button",className:"nice-toast__close",onClick:()=>r(!0),children:"✕"})]})};let J=0;function K(){const[s,t]=i.useState([]),c=i.useCallback((n,a,l)=>{const h=`toast-${++J}`;return t(d=>[...d,{id:h,variant:n,message:a,title:l?.title,duration:l?.duration}]),h},[]),r=i.useCallback(n=>{t(a=>a.filter(l=>l.id!==n))},[]);return{toasts:s,dismiss:r,info:(n,a)=>c("info",n,a),success:(n,a)=>c("success",n,a),warning:(n,a)=>c("warning",n,a),error:(n,a)=>c("error",n,a)}}const Q={info:e.jsx("svg",{width:"28",height:"28",viewBox:"0 0 24 24",fill:"currentColor",children:e.jsx("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z"})}),warning:e.jsx("svg",{width:"28",height:"28",viewBox:"0 0 24 24",fill:"currentColor",children:e.jsx("path",{d:"M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z"})}),error:e.jsx("svg",{width:"28",height:"28",viewBox:"0 0 24 24",fill:"currentColor",children:e.jsx("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z"})}),success:e.jsx("svg",{width:"28",height:"28",viewBox:"0 0 24 24",fill:"currentColor",children:e.jsx("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"})})},X=({visible:s,message:t,header:c,icon:r,variant:n="warning",acceptLabel:a,rejectLabel:l,onAccept:h,onReject:d,closeOnOverlay:p=!1,closeOnEscape:f=!0,size:g="md",className:x,style:b})=>{const{t:v}=C.$o();if(i.useEffect(()=>{if(!s||!f)return;const j=N=>{N.key==="Escape"&&d()};return document.addEventListener("keydown",j),()=>document.removeEventListener("keydown",j)},[s,f,d]),i.useEffect(()=>(s?document.body.style.overflow="hidden":document.body.style.overflow="",()=>{document.body.style.overflow=""}),[s]),!s)return null;const u=r??Q[n],o=a??v("confirm.accept","Yes"),w=l??v("confirm.reject","No");return e.jsx("div",{className:"nice-modal-overlay",onClick:p?d:void 0,children:e.jsxs("div",{className:`nice-confirm nice-confirm--${n} nice-confirm--${g} ${x||""}`,style:b,role:"alertdialog","aria-modal":"true","aria-label":c,"aria-describedby":"nice-confirm-message",onClick:j=>j.stopPropagation(),children:[c&&e.jsx("div",{className:"nice-confirm__header",children:e.jsx("h3",{className:"nice-confirm__title",children:c})}),e.jsxs("div",{className:"nice-confirm__body",children:[u&&e.jsx("div",{className:`nice-confirm__icon nice-confirm__icon--${n}`,children:u}),e.jsx("div",{id:"nice-confirm-message",className:"nice-confirm__message",children:t})]}),e.jsxs("div",{className:"nice-confirm__footer",children:[e.jsx("button",{type:"button",className:"nice-btn nice-btn--ghost nice-btn--md",onClick:d,children:w}),e.jsx("button",{type:"button",className:`nice-btn nice-btn--${n==="error"?"error":"primary"} nice-btn--md`,onClick:h,autoFocus:!0,children:o})]})]})})},Z=({error:s,onRetry:t,retryLabel:c="Retry",title:r="Operation failed",autoRetrySeconds:n,variant:a="error",icon:l,size:h="md",className:d,style:p,"data-testid":f})=>{const[g,x]=i.useState(n??0),b=i.useRef(),v=typeof s=="string"?s:s.message,u=i.useCallback(()=>{x(n??0),t()},[t,n]);return i.useEffect(()=>{if(!(!n||n<=0))return x(n),b.current=setInterval(()=>{x(o=>o<=1?(clearInterval(b.current),t(),0):o-1)},1e3),()=>clearInterval(b.current)},[n,t]),e.jsxs("div",{className:`nice-retry-panel nice-retry-panel--${a} nice-retry-panel--${h} ${d||""}`,style:p,role:"alert","data-testid":f,children:[e.jsx("div",{className:"nice-retry-panel__icon",children:l??"⚠️"}),e.jsxs("div",{className:"nice-retry-panel__content",children:[e.jsx("div",{className:"nice-retry-panel__title",children:r}),e.jsx("p",{className:"nice-retry-panel__message",children:v})]}),e.jsxs("div",{className:"nice-retry-panel__actions",children:[e.jsx("button",{type:"button",className:"nice-btn nice-btn--primary nice-btn--sm",onClick:u,children:c}),n&&g>0&&e.jsxs("span",{className:"nice-retry-panel__countdown",children:["Auto-retry in ",g,"s"]})]})]})};function ee(s){return window.addEventListener("online",s),window.addEventListener("offline",s),()=>{window.removeEventListener("online",s),window.removeEventListener("offline",s)}}function se(){return navigator.onLine}function ne(){return!0}const te=({message:s="You are offline. Some features may be unavailable.",variant:t="warning",icon:c,size:r="md",className:n,style:a,"data-testid":l})=>i.useSyncExternalStore(ee,se,ne)?null:e.jsxs("div",{className:`nice-offline-banner nice-offline-banner--${t} nice-offline-banner--${r} ${n||""}`,style:a,role:"alert","aria-live":"assertive","data-testid":l,children:[e.jsx("span",{className:"nice-offline-banner__icon",children:c??"📡"}),e.jsx("span",{className:"nice-offline-banner__message",children:s})]});function q({timeoutMs:s=1e4,slowThresholdMs:t=3e3,onTimeout:c,autoRetry:r=!1,autoRetryCount:n=3}={}){const[a,l]=i.useState(!1),[h,d]=i.useState(!1),[p,f]=i.useState(!1),[g,x]=i.useState(0),[b,v]=i.useState(0),u=i.useRef(null),o=i.useRef(null),w=i.useRef(null),j=i.useRef(0),N=i.useCallback(()=>{u.current&&clearTimeout(u.current),o.current&&clearTimeout(o.current),w.current&&clearInterval(w.current)},[]),k=i.useCallback(()=>{N(),l(!0),d(!1),f(!1),x(0),j.current=Date.now(),w.current=setInterval(()=>{x(Date.now()-j.current)},200),u.current=setTimeout(()=>{d(!0)},t),o.current=setTimeout(()=>{f(!0),l(!1),d(!1),N(),c?.()},s)},[N,t,s,c]),$=i.useCallback(()=>{N(),l(!1),d(!1)},[N]),m=i.useCallback(()=>{v(y=>y+1),f(!1),k()},[k]);return i.useEffect(()=>()=>N(),[N]),i.useEffect(()=>{if(r&&p&&b<n){const y=Math.pow(2,b)*1e3,L=setTimeout(()=>m(),y);return()=>clearTimeout(L)}},[r,n,p,b,m]),{isLoading:a,isSlow:h,isTimedOut:p,elapsed:g,retryCount:b,start:k,stop:$,retry:m}}const ie=({timeoutMs:s=1e4,slowThresholdMs:t=3e3,onTimeout:c,onRetry:r,autoRetry:n=!1,autoRetryCount:a=3,showProgress:l=!0,slowMessage:h="Operacja trwa dłużej niż zwykle…",timeoutMessage:d="Przekroczono limit czasu. Spróbuj ponownie.",loading:p,children:f,size:g="md",className:x,style:b,"data-testid":v})=>{const{isSlow:u,isTimedOut:o,elapsed:w,retry:j}=q({timeoutMs:s,slowThresholdMs:t,onTimeout:c,autoRetry:n,autoRetryCount:a}),N=()=>{j(),r?.()};if(!p)return e.jsx(e.Fragment,{children:f});if(o)return e.jsxs("div",{className:`nice-timeout-feedback nice-timeout-feedback--timeout nice-timeout-feedback--${g} ${x??""}`,style:b,role:"alert","data-testid":v,children:[e.jsx("p",{className:"nice-timeout-feedback__message",children:d}),e.jsx("button",{className:"nice-timeout-feedback__retry-btn",onClick:N,type:"button",children:"Spróbuj ponownie"})]});const k=Math.min(100,w/s*100);return e.jsxs("div",{className:`nice-timeout-feedback nice-timeout-feedback--${g} ${u?"nice-timeout-feedback--slow":""} ${x??""}`,style:b,"data-testid":v,children:[e.jsx("div",{className:"nice-timeout-feedback__spinner","aria-busy":"true"}),u&&e.jsx("p",{className:"nice-timeout-feedback__slow-msg",children:h}),l&&e.jsx("div",{className:"nice-timeout-feedback__progress",role:"progressbar","aria-valuenow":k,"aria-valuemin":0,"aria-valuemax":100,children:e.jsx("div",{className:"nice-timeout-feedback__progress-bar",style:{width:`${k}%`}})})]})},O=i.forwardRef(({visible:s,onAcceptAll:t,onRejectAll:c,onSave:r,categories:n=["necessary","analytics","marketing","preferences"],defaults:a,position:l="bottom",size:h="md",policyUrl:d,showDetails:p=!1,className:f,style:g,id:x,...b},v)=>{const u=C.Hs(x),{t:o}=C.$o(),[w,j]=i.useState(!0),N=s??w,[k,$]=i.useState(p),[m,y]=i.useState(()=>{const _={necessary:!0,analytics:!1,marketing:!1,preferences:!1};return a&&Object.assign(_,a),_.necessary=!0,_}),L={necessary:o("cookie.necessary","Necessary"),analytics:o("cookie.analytics","Analytics"),marketing:o("cookie.marketing","Marketing"),preferences:o("cookie.preferences","Preferences")},T={necessary:o("cookie.necessaryDesc","Required for the website to function. Cannot be disabled."),analytics:o("cookie.analyticsDesc","Help us understand how visitors interact with the website."),marketing:o("cookie.marketingDesc","Used to deliver relevant advertisements."),preferences:o("cookie.preferencesDesc","Allow the website to remember your choices.")},I=i.useCallback(()=>{const _={necessary:!0,analytics:!0,marketing:!0,preferences:!0};t?.(),r?.(_),j(!1)},[t,r]),E=i.useCallback(()=>{const _={necessary:!0,analytics:!1,marketing:!1,preferences:!1};c?.(),r?.(_),j(!1)},[c,r]),R=i.useCallback(()=>{r?.({...m,necessary:!0}),j(!1)},[m,r]);return N?e.jsx("div",{ref:v,id:u,className:`nice-cookie-consent nice-cookie-consent--${l} nice-cookie-consent--${h} ${f??""}`,style:g,role:"dialog","aria-label":o("cookie.label","Cookie Consent"),"aria-modal":"true",...b,children:e.jsxs("div",{className:"nice-cookie-consent__content",children:[e.jsxs("p",{className:"nice-cookie-consent__message",children:[o("cookie.message","We use cookies to enhance your experience. By continuing to visit this site you agree to our use of cookies."),d&&e.jsxs(e.Fragment,{children:[" ",e.jsx("a",{href:d,className:"nice-cookie-consent__link",target:"_blank",rel:"noopener noreferrer",children:o("cookie.learnMore","Learn more")})]})]}),k&&e.jsx("div",{className:"nice-cookie-consent__details",children:n.map(_=>e.jsxs("label",{className:"nice-cookie-consent__category",children:[e.jsx("input",{type:"checkbox",checked:m[_],disabled:_==="necessary",onChange:D=>y(z=>({...z,[_]:D.target.checked})),className:"nice-cookie-consent__checkbox"}),e.jsxs("div",{className:"nice-cookie-consent__cat-info",children:[e.jsx("strong",{children:L[_]}),e.jsx("span",{className:"nice-cookie-consent__cat-desc",children:T[_]})]})]},_))}),e.jsxs("div",{className:"nice-cookie-consent__actions",children:[!k&&e.jsx("button",{type:"button",className:"nice-cookie-consent__btn nice-cookie-consent__btn--details",onClick:()=>$(!0),children:o("cookie.customize","Customize")}),k&&e.jsx("button",{type:"button",className:"nice-cookie-consent__btn nice-cookie-consent__btn--save",onClick:R,children:o("cookie.savePreferences","Save preferences")}),e.jsx("button",{type:"button",className:"nice-cookie-consent__btn nice-cookie-consent__btn--reject",onClick:E,children:o("cookie.rejectAll","Reject all")}),e.jsx("button",{type:"button",className:"nice-cookie-consent__btn nice-cookie-consent__btn--accept",onClick:I,children:o("cookie.acceptAll","Accept all")})]})]})}):null});O.displayName="NiceCookieConsent";const H=i.forwardRef(({onSubmit:s,onForgotPassword:t,onRegister:c,loading:r=!1,error:n,variant:a="primary",size:l="md",showRememberMe:h=!0,showForgotPassword:d=!0,showRegister:p=!1,title:f,logo:g,usernameLabel:x,passwordLabel:b,usernamePlaceholder:v,passwordPlaceholder:u,className:o,style:w,id:j,...N},k)=>{const $=C.Hs(j),{t:m}=C.$o(),[y,L]=i.useState(""),[T,I]=i.useState(""),[E,R]=i.useState(!1),[_,D]=i.useState(!1),z=`${$}-user`,F=`${$}-pass`,B=`${$}-remember`,V=i.useCallback(S=>{S.preventDefault(),!r&&s?.({username:y,password:T,rememberMe:E})},[r,y,T,E,s]);return e.jsxs("form",{ref:k,id:$,className:`nice-login nice-login--${a} nice-login--${l} ${o??""}`,style:w,onSubmit:V,noValidate:!0,...N,children:[g&&e.jsx("div",{className:"nice-login__logo",children:g}),f&&e.jsx("h2",{className:"nice-login__title",children:f??m("login.title","Sign In")}),n&&e.jsx("div",{className:"nice-login__error",role:"alert",children:n}),e.jsxs("div",{className:"nice-login__field",children:[e.jsx("label",{htmlFor:z,className:"nice-login__label",children:x??m("login.username","Username")}),e.jsx("input",{id:z,className:"nice-login__input",type:"text",value:y,onChange:S=>L(S.target.value),placeholder:v??m("login.usernamePlaceholder","Enter your username"),autoComplete:"username",required:!0,disabled:r,"aria-required":"true"})]}),e.jsxs("div",{className:"nice-login__field",children:[e.jsx("label",{htmlFor:F,className:"nice-login__label",children:b??m("login.password","Password")}),e.jsxs("div",{className:"nice-login__password-wrap",children:[e.jsx("input",{id:F,className:"nice-login__input",type:_?"text":"password",value:T,onChange:S=>I(S.target.value),placeholder:u??m("login.passwordPlaceholder","Enter your password"),autoComplete:"current-password",required:!0,disabled:r,"aria-required":"true"}),e.jsx("button",{type:"button",className:"nice-login__toggle-password",onClick:()=>D(!_),"aria-label":_?m("login.hidePassword","Hide password"):m("login.showPassword","Show password"),tabIndex:-1,children:_?"🙈":"👁"})]})]}),e.jsxs("div",{className:"nice-login__options",children:[h&&e.jsxs("label",{className:"nice-login__remember",htmlFor:B,children:[e.jsx("input",{id:B,type:"checkbox",checked:E,onChange:S=>R(S.target.checked),disabled:r}),e.jsx("span",{children:m("login.rememberMe","Remember me")})]}),d&&t&&e.jsx("button",{type:"button",className:"nice-login__forgot",onClick:t,disabled:r,children:m("login.forgotPassword","Forgot password?")})]}),e.jsx("button",{type:"submit",className:`nice-login__submit nice-login__submit--${a}`,disabled:r||!y||!T,children:r?m("login.loading","Signing in..."):m("login.submit","Sign In")}),p&&c&&e.jsxs("p",{className:"nice-login__register",children:[m("login.noAccount","Don't have an account?")," ",e.jsx("button",{type:"button",className:"nice-login__register-link",onClick:c,disabled:r,children:m("login.register","Register")})]})]})});H.displayName="NiceLoginForm";const A=class A extends i.Component{constructor(){super(...arguments),this.state={hasError:!1,error:null},this.handleReset=()=>{this.setState({hasError:!1,error:null})}}static getDerivedStateFromError(t){return{hasError:!0,error:t}}componentDidCatch(t,c){this.props.onError?.(t,c)}render(){if(this.state.hasError&&this.state.error){const{fallback:t,showRetry:c=!0,retryLabel:r="Retry",title:n="Something went wrong"}=this.props;return typeof t=="function"?t(this.state.error,this.handleReset):t||e.jsxs("div",{className:"nice-error-boundary",role:"alert",children:[e.jsx("div",{className:"nice-error-boundary__icon",children:"⚠️"}),e.jsx("h2",{className:"nice-error-boundary__title",children:n}),e.jsx("p",{className:"nice-error-boundary__message",children:this.state.error.message}),c&&e.jsx("button",{type:"button",className:"nice-btn nice-btn--primary",onClick:this.handleReset,children:r})]})}return this.props.children}};A.displayName="NiceErrorBoundary";let M=A;exports.NiceAlert=U;exports.NiceConfirmDialog=X;exports.NiceCookieConsent=O;exports.NiceDrawer=Y;exports.NiceErrorBoundary=M;exports.NiceLoginForm=H;exports.NiceOfflineBanner=te;exports.NiceRetryPanel=Z;exports.NiceTimeoutFeedback=ie;exports.NiceToastContainer=W;exports.alertIcons=P;exports.useNiceTimeout=q;exports.useNiceToast=K;